#include "conjunto.h"

Conjunto::Conjunto(int tam) {
	cantidad = tam;
	conjunto = new Nodo*[tam];
	
	for (int i=0; i < tam; i++) {
		conjunto[i] = 0;
	}
}

Conjunto::Conjunto(const Conjunto* c) {
	cantidad = c->cantidad;
	conjunto = new char[cantidad];
	
	for (int i=0; i < cantidad; i++) {
		conjunto[i] = c->conjunto[i];
	}
}

Conjunto::~Conjunto() {
	delete[] conjunto;
}

void Conjunto::agregar(int elem) {
	// elem va de N a 1
	conjunto[elem-1] = 1;
}

void Conjunto::eliminar(int elem) {
	conjunto[elem-1] = 0;
}

Conjunto* Conjunto::unir(const Conjunto& c) {
	Conjunto* res = new Conjunto(this);
	for (int i=0; i < c.cantidad; i++) {
		res->conjunto[i] |= c.conjunto[i];
	}
	return res;
}

Conjunto* Conjunto::intersecar(const Conjunto& c) {
	Conjunto* res = new Conjunto(this);
	for (int i=0; i < c.cantidad; i++) {
		res->conjunto[i] &= c.conjunto[i];
	}
	return res;
}

bool Conjunto::pertenece(int elem) {
	return (bool) conjunto[elem];
}

void Conjunto::imprimir() {
	for (int i=0; i < cantidad; i++) {
		cout << (int) conjunto[i] << " ";
	}
	cout << endl;
}
